SetGfxDriver 1:Graphics 800,600,8,2 :SetBuffer FrontBuffer() :SeedRnd MilliSecs()
Include "fn1.bb"
st1#=1256:st2#=1256:st3#=2:st4#=2
While Not KeyHit(1) Or MouseHit(2)
ClsColor 0,0,0
Cls
randnum(0)
getnums()
;	fact_faza():erase()
;	Color 255,255,210:Text 5,5,bit+"/"+unbit+" "+fasecnt+":  "+ tycnt+" maxfase1: "+maxfase1+" minfase2: "+minfase2+"  middle=" + ttt0+"/"+ zzz1 + ", Null cnt=" + cnull+"%, max without Null="+wnullmax+", phase=3",False ,False
	


;checke()
;Color 210,255,210:Text 310,2,in,False ,False
zzz1=zzz1+1:hzzz1=hzzz1+1:jzzz1=jzzz1+1
Flip
If zzz1> 6   Then 
 WaitMouse()
;bit=WaitMouse()
If ((bit<>2) And (tycnt>maxfase1)) Then maxfase1=tycnt
If ((bit=2) And (tycnt<minfase2)) Then minfase2=tycnt	
bit=mod4(bit):
randnum(1):fasecnt=fasecnt+1
EndIf

VWait 
Wend 

Function erase()

		For unittest=0 To 555
	st3=Floor(unittest^0.2)
		For i = 0 To 9 
		PokeInt in3,i*5,mod2(PeekInt (in31,i*5)* unittest^st3) 
		PokeInt in2,i*5,mod2(PeekInt (in1,i*5))	  		
		PokeInt in4,i*5,mod2(PeekInt (in41,i*5)- unittest^st3)	
		PokeInt in5,i*5,mod2(PeekInt (in51,i*5))
		PokeInt in6,i*5,mod2(PeekInt (in61,i*5)/ unittest^st3)		
		PokeInt in7,i*5,mod2(PeekInt (in71,i*5))	
		PokeInt in8,i*5,mod2(PeekInt (in81,i*5)+ unittest^st3) 
		PokeInt in9,i*5,mod2(PeekInt (in91,i*5)) 		
		PokeInt in10,i*5,mod2(PeekInt (in101,i*5)Xor unittest^st3)							
		Next 
		eee1=fact(fact(PeekInt(in2,0),PeekInt(in2,5),PeekInt(in2,10)),fact(PeekInt(in2,0+15),PeekInt(in2,5+15),PeekInt(in2,10+15)),fact(PeekInt(in2,0+2*15),PeekInt(in2,5+2*15),PeekInt(in2,10+2*15)))
		eee2=fact(fact(PeekInt(in3,0),PeekInt(in3,5),PeekInt(in3,10)),fact(PeekInt(in3,0+15),PeekInt(in3,5+15),PeekInt(in3,10+15)),fact(PeekInt(in3,0+2*15),PeekInt(in3,5+2*15),PeekInt(in3,10+2*15)))
		eee3=fact(fact(PeekInt(in4,0),PeekInt(in4,5),PeekInt(in4,10)),fact(PeekInt(in4,0+15),PeekInt(in4,5+15),PeekInt(in4,10+15)),fact(PeekInt(in4,0+2*15),PeekInt(in4,5+2*15),PeekInt(in4,10+2*15)))
		e1ee=fact(eee1,eee2,eee3)
		eee1=fact(fact(PeekInt(in5,0),PeekInt(in5,5),PeekInt(in5,10)),fact(PeekInt(in5,0+15),PeekInt(in5,5+15),PeekInt(in5,10+15)),fact(PeekInt(in5,0+2*15),PeekInt(in5,5+2*15),PeekInt(in5,10+2*15)))
		eee2=fact(fact(PeekInt(in6,0),PeekInt(in6,5),PeekInt(in6,10)),fact(PeekInt(in6,0+15),PeekInt(in6,5+15),PeekInt(in6,10+15)),fact(PeekInt(in6,0+2*15),PeekInt(in6,5+2*15),PeekInt(in6,10+2*15)))
		eee3=fact(fact(PeekInt(in7,0),PeekInt(in7,5),PeekInt(in7,10)),fact(PeekInt(in7,0+15),PeekInt(in7,5+15),PeekInt(in7,10+15)),fact(PeekInt(in7,0+2*15),PeekInt(in7,5+2*15),PeekInt(in7,10+2*15)))
		e2ee=fact(eee1,eee2,eee3)	
		eee1=fact(fact(PeekInt(in8,0),PeekInt(in8,5),PeekInt(in8,10)),fact(PeekInt(in8,0+15),PeekInt(in8,5+15),PeekInt(in8,10+15)),fact(PeekInt(in8,0+2*15),PeekInt(in8,5+2*15),PeekInt(in8,10+2*15)))
		eee2=fact(fact(PeekInt(in9,0),PeekInt(in9,5),PeekInt(in9,10)),fact(PeekInt(in9,0+15),PeekInt(in9,5+15),PeekInt(in9,10+15)),fact(PeekInt(in9,0+2*15),PeekInt(in9,5+2*15),PeekInt(in9,10+2*15)))
		eee3=fact(fact(PeekInt(in10,0),PeekInt(in10,5),PeekInt(in10,10)),fact(PeekInt(in10,0+15),PeekInt(in10,5+15),PeekInt(in10,10+15)),fact(PeekInt(in10,0+2*15),PeekInt(in10,5+2*15),PeekInt(in10,10+2*15)))
		e3ee=fact(eee1,eee2,eee3)
		eee=""+e1ee+""+e2ee+""+e3ee					
		If (eee = unittest) Then untest=unittest:hzzz(hzzz1)=hzzz(hzzz1)+1:hzzz2(hzzz1,hzzz2(hzzz1,100))=unittest:hzzz2(hzzz1,100)=hzzz2(hzzz1,100)+1
		If hzzz2(hzzz1,100)=0 Then hzzz2(hzzz1,99)=eee
	Next
	


		
End Function

Function fact_faza()



If bit <>2 Then	

		For unittest=0 To 555
	st3=Floor(unittest^0.3)
		For i = 0 To 9 
		PokeInt in3,i*5,mod2(PeekInt (in31,i*5)* unittest^st3) 
		PokeInt in2,i*5,mod2(PeekInt (in1,i*5))	  		
		PokeInt in4,i*5,mod2(PeekInt (in41,i*5)- unittest^st3)	
		PokeInt in5,i*5,mod2(PeekInt (in51,i*5))
		PokeInt in6,i*5,mod2(PeekInt (in61,i*5)/ unittest^st3)		
		PokeInt in7,i*5,mod2(PeekInt (in71,i*5))	
		PokeInt in8,i*5,mod2(PeekInt (in81,i*5)+ unittest^st3) 
		PokeInt in9,i*5,mod2(PeekInt (in91,i*5)) 		
		PokeInt in10,i*5,mod2(PeekInt (in101,i*5)Xor unittest^st3)							
		Next 
		eee1=fact(fact(PeekInt(in2,0),PeekInt(in2,5),PeekInt(in2,10)),fact(PeekInt(in2,0+15),PeekInt(in2,5+15),PeekInt(in2,10+15)),fact(PeekInt(in2,0+2*15),PeekInt(in2,5+2*15),PeekInt(in2,10+2*15)))
		eee2=fact(fact(PeekInt(in3,0),PeekInt(in3,5),PeekInt(in3,10)),fact(PeekInt(in3,0+15),PeekInt(in3,5+15),PeekInt(in3,10+15)),fact(PeekInt(in3,0+2*15),PeekInt(in3,5+2*15),PeekInt(in3,10+2*15)))
		eee3=fact(fact(PeekInt(in4,0),PeekInt(in4,5),PeekInt(in4,10)),fact(PeekInt(in4,0+15),PeekInt(in4,5+15),PeekInt(in4,10+15)),fact(PeekInt(in4,0+2*15),PeekInt(in4,5+2*15),PeekInt(in4,10+2*15)))
		e1ee=fact(eee1,eee2,eee3)
		eee1=fact(fact(PeekInt(in5,0),PeekInt(in5,5),PeekInt(in5,10)),fact(PeekInt(in5,0+15),PeekInt(in5,5+15),PeekInt(in5,10+15)),fact(PeekInt(in5,0+2*15),PeekInt(in5,5+2*15),PeekInt(in5,10+2*15)))
		eee2=fact(fact(PeekInt(in6,0),PeekInt(in6,5),PeekInt(in6,10)),fact(PeekInt(in6,0+15),PeekInt(in6,5+15),PeekInt(in6,10+15)),fact(PeekInt(in6,0+2*15),PeekInt(in6,5+2*15),PeekInt(in6,10+2*15)))
		eee3=fact(fact(PeekInt(in7,0),PeekInt(in7,5),PeekInt(in7,10)),fact(PeekInt(in7,0+15),PeekInt(in7,5+15),PeekInt(in7,10+15)),fact(PeekInt(in7,0+2*15),PeekInt(in7,5+2*15),PeekInt(in7,10+2*15)))
		e2ee=fact(eee1,eee2,eee3)	
		eee1=fact(fact(PeekInt(in8,0),PeekInt(in8,5),PeekInt(in8,10)),fact(PeekInt(in8,0+15),PeekInt(in8,5+15),PeekInt(in8,10+15)),fact(PeekInt(in8,0+2*15),PeekInt(in8,5+2*15),PeekInt(in8,10+2*15)))
		eee2=fact(fact(PeekInt(in9,0),PeekInt(in9,5),PeekInt(in9,10)),fact(PeekInt(in9,0+15),PeekInt(in9,5+15),PeekInt(in9,10+15)),fact(PeekInt(in9,0+2*15),PeekInt(in9,5+2*15),PeekInt(in9,10+2*15)))
		eee3=fact(fact(PeekInt(in10,0),PeekInt(in10,5),PeekInt(in10,10)),fact(PeekInt(in10,0+15),PeekInt(in10,5+15),PeekInt(in10,10+15)),fact(PeekInt(in10,0+2*15),PeekInt(in10,5+2*15),PeekInt(in10,10+2*15)))
		e3ee=fact(eee1,eee2,eee3)
		eee=""+e1ee+""+e2ee+""+e3ee					
		If (eee = unittest) Then untest=unittest:zzz(zzz1)=zzz(zzz1)+1:zzz2(zzz1,zzz2(zzz1,100))=unittest:zzz2(zzz1,100)=zzz2(zzz1,100)+1
		If zzz2(zzz1,100)=0 Then zzz2(zzz1,99)=eee
	Next

				
Else
		For unittest=0 To 555
	st3=Floor(unittest^0.25)
		For i = 0 To 9 
		PokeInt in3,i*5,mod2(PeekInt (in31,i*5)* unittest^st3) 
		PokeInt in2,i*5,mod2(PeekInt (in1,i*5))	  		
		PokeInt in4,i*5,mod2(PeekInt (in41,i*5)- unittest^st3)	
		PokeInt in5,i*5,mod2(PeekInt (in51,i*5))
		PokeInt in6,i*5,mod2(PeekInt (in61,i*5)/ unittest^st3)		
		PokeInt in7,i*5,mod2(PeekInt (in71,i*5))	
		PokeInt in8,i*5,mod2(PeekInt (in81,i*5)+ unittest^st3) 
		PokeInt in9,i*5,mod2(PeekInt (in91,i*5)) 		
		PokeInt in10,i*5,mod2(PeekInt (in101,i*5)Xor unittest^st3)							
		Next 
		eee1=fact(fact(PeekInt(in2,0),PeekInt(in2,5),PeekInt(in2,10)),fact(PeekInt(in2,0+15),PeekInt(in2,5+15),PeekInt(in2,10+15)),fact(PeekInt(in2,0+2*15),PeekInt(in2,5+2*15),PeekInt(in2,10+2*15)))
		eee2=fact(fact(PeekInt(in3,0),PeekInt(in3,5),PeekInt(in3,10)),fact(PeekInt(in3,0+15),PeekInt(in3,5+15),PeekInt(in3,10+15)),fact(PeekInt(in3,0+2*15),PeekInt(in3,5+2*15),PeekInt(in3,10+2*15)))
		eee3=fact(fact(PeekInt(in4,0),PeekInt(in4,5),PeekInt(in4,10)),fact(PeekInt(in4,0+15),PeekInt(in4,5+15),PeekInt(in4,10+15)),fact(PeekInt(in4,0+2*15),PeekInt(in4,5+2*15),PeekInt(in4,10+2*15)))
		e1ee=fact(eee1,eee2,eee3)
		eee1=fact(fact(PeekInt(in5,0),PeekInt(in5,5),PeekInt(in5,10)),fact(PeekInt(in5,0+15),PeekInt(in5,5+15),PeekInt(in5,10+15)),fact(PeekInt(in5,0+2*15),PeekInt(in5,5+2*15),PeekInt(in5,10+2*15)))
		eee2=fact(fact(PeekInt(in6,0),PeekInt(in6,5),PeekInt(in6,10)),fact(PeekInt(in6,0+15),PeekInt(in6,5+15),PeekInt(in6,10+15)),fact(PeekInt(in6,0+2*15),PeekInt(in6,5+2*15),PeekInt(in6,10+2*15)))
		eee3=fact(fact(PeekInt(in7,0),PeekInt(in7,5),PeekInt(in7,10)),fact(PeekInt(in7,0+15),PeekInt(in7,5+15),PeekInt(in7,10+15)),fact(PeekInt(in7,0+2*15),PeekInt(in7,5+2*15),PeekInt(in7,10+2*15)))
		e2ee=fact(eee1,eee2,eee3)	
		eee1=fact(fact(PeekInt(in8,0),PeekInt(in8,5),PeekInt(in8,10)),fact(PeekInt(in8,0+15),PeekInt(in8,5+15),PeekInt(in8,10+15)),fact(PeekInt(in8,0+2*15),PeekInt(in8,5+2*15),PeekInt(in8,10+2*15)))
		eee2=fact(fact(PeekInt(in9,0),PeekInt(in9,5),PeekInt(in9,10)),fact(PeekInt(in9,0+15),PeekInt(in9,5+15),PeekInt(in9,10+15)),fact(PeekInt(in9,0+2*15),PeekInt(in9,5+2*15),PeekInt(in9,10+2*15)))
		eee3=fact(fact(PeekInt(in10,0),PeekInt(in10,5),PeekInt(in10,10)),fact(PeekInt(in10,0+15),PeekInt(in10,5+15),PeekInt(in10,10+15)),fact(PeekInt(in10,0+2*15),PeekInt(in10,5+2*15),PeekInt(in10,10+2*15)))
		e3ee=fact(eee1,eee2,eee3)
		eee=""+e1ee+""+e2ee+""+e3ee					
		If (eee = unittest) Then untest=unittest:jzzz(jzzz1)=jzzz(jzzz1)+1:jzzz2(jzzz1,jzzz2(jzzz1,100))=unittest:jzzz2(jzzz1,100)=jzzz2(jzzz1,100)+1
		If jzzz2(jzzz1,100)=0 Then jzzz2(jzzz1,99)=eee
	Next
		

	
EndIf 	

		For i = 0 To 9 
		PokeInt in31,i*5,mod2(PeekInt (in31,i*5)* untest^st3) 
		PokeInt in1,i*5,mod2(PeekInt (in1,i*5))	  		
		PokeInt in41,i*5,mod2(PeekInt (in41,i*5)- untest^st3)	
		PokeInt in51,i*5,mod2(PeekInt (in51,i*5))
		PokeInt in61,i*5,mod2(PeekInt (in61,i*5)/ untest^st3)		
		PokeInt in71,i*5,mod2(PeekInt (in71,i*5))	
		PokeInt in81,i*5,mod2(PeekInt (in81,i*5)+ untest^st3) 
		PokeInt in91,i*5,mod2(PeekInt (in91,i*5)) 		
		PokeInt in101,i*5,mod2(PeekInt (in101,i*5)Xor untest^st3)							
		Next 


End Function